﻿using System;
using System.Drawing;
using System.Windows.Forms;
using AiFrame.InterfaceLib.Windows.Controls;

namespace AiFrame.InterfaceLib.Windows.Themes
{
    /// <summary>
    /// Specifies the application theme.
    /// </summary>
    public interface ITheme: INavigationBarTheme, IDataNavigationBarTheme, IDataGridTheme
    {
        /// <summary>
        /// Specifies the header space image which is
        /// plaved below the title image.
        /// </summary>
        /// <returns>The image.</returns>
        Image GetHeaderImageSpace();

        /// <summary>
        /// Specifies the header icon for a data window.
        /// </summary>
        /// <returns>The header icon.</returns>
        Image GetDataWindowHeaderIcon();

        /// <summary>
        /// Specifies the header icon for all list views.
        /// </summary>
        /// <returns>The header icon.</returns>
        Image GetListHeaderIcon();

        /// <summary>
        /// Specifies the start color of a panel's gradient.
        /// </summary>
        /// <returns>The start color.</returns>
        Color GetPanelBeginColor();

        /// <summary>
        /// Specifies the end color of a panel's gradient.
        /// </summary>
        /// <returns>The end color.</returns>
        Color GetPanelEndColor();

        /// <summary>
        /// Specifies the custom ToolStripRenderer.
        /// </summary>
        /// <returns>The toolstrip renderer.</returns>
        ToolStripRenderer GetProfessionalColorTable();

        /// <summary>
        /// Specifies the main header image displayed
        /// above the main menu.
        /// </summary>
        /// <returns>The main header image.</returns>
        Image GetMainHeaderImage();

        /// <summary>
        /// Specifies the font color of the application header.
        /// </summary>
        /// <returns>The font color.</returns>
        Color GetMainHeaderFontColor();

        /// <summary>
        /// Specifies the font used in the application header.
        /// </summary>
        /// <returns>The font.</returns>
        Font GetMainHeaderFont();

        /// <summary>
        /// Specifies the position of the headline in the
        /// application main header.
        /// </summary>
        /// <returns>The position.</returns>
        [Obsolete]
        Point GetMainHeaderHeadlinePosition();

        /// <summary>
        /// Specifies the position of a logo in the 
        /// main header.
        /// </summary>
        /// <returns>The position.</returns>
        [Obsolete]
        Point GetMainHeaderLogoPosition();

        /// <summary>
        /// Specifies the program's header image.
        /// </summary>
        /// <returns>The image.</returns>
        Image GetProgramHeader();

        /// <summary>
        /// Specifies the header's image of a data window.
        /// </summary>
        /// <returns>The image.</returns>
        [Obsolete]
        Image GetDataWindowHeader();

        /// <summary>
        /// Specifies the font's color used in header of
        /// data windows.
        /// </summary>
        /// <returns>The color.</returns>
        Color GetDataWindowHeaderFontColor();

        /// <summary>
        /// Specifies the font used in the header of data windows,
        /// </summary>
        /// <returns>The font.</returns>
        Font GetDataWindowHeaderFont();

        /// <summary>
        /// Specifies the background logo of data windows.
        /// </summary>
        /// <returns>The background logo.</returns>
        Image GetDataWindowBgLogo();
    }
}